package com.ylbh.modules.goods.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ylbh.common.pojo.goods.dto.SubGoodsClassDTO;
import com.ylbh.common.pojo.goods.vo.GoodsServiceVO;
import com.ylbh.common.pojo.goods.vo.GoodsTypeVO;
import com.ylbh.common.pojo.goods.vo.SpecIficationVO;
import com.ylbh.common.pojo.goodsclass.vo.ShoppingGoodsClassSpecVO;
import com.ylbh.common.pojo.member.dto.MemberDTO;
import com.ylbh.common.utils.PageDTO;
import com.ylbh.common.utils.PageUtils;

import java.util.List;

/**
 * @author mgh
 */
public interface GoodsClassService  extends IService<SubGoodsClassDTO> {

    /**
     * 查询商品分类列表
     * @param pageDTO
     * @return
     */
    PageUtils queryGoodsClassList(PageDTO pageDTO);

    /**
     * 获取商品分类的子分类
     * @param id
     * @return
     */
    List<ShoppingGoodsClassSpecVO> queryGoodsSubClassById(Integer id);

    /**
     * 添加商品分类
     * @param subGoodsClassDTO
     */
    void add(SubGoodsClassDTO subGoodsClassDTO);

    /**
     * 修改商品分类
     * @param subGoodsClassDTO
     */
    void modifyById(SubGoodsClassDTO subGoodsClassDTO);

    /**
     * 根据类型id查询规格列表
     * @param typeId
     * @return
     */
    List<SpecIficationVO> querySpecsListByTypeId(Integer typeId);

    /**
     * 接触规格与分类的绑定关系
     * @param typeId
     * @param specId
     */
    void removeSpecByTypeId(Integer typeId, Integer specId);

    /**
     * 查询这个分类下没有选择的剩余规格
     * @param id
     * @return
     */
    List<SpecIficationVO> querySpecsList(Integer[] id);

    /**
     * 对当前分类添加规格
     * @param typeId
     * @param specId
     */
    void addClassSpec(Integer typeId, Integer specId);

    /**
     * 获取商品分类列表
     * @return
     */
    List<GoodsTypeVO> queryGoodsTypeList();

    /**
     * 商品服务列表
     * @param pageDTO
     * @return
     */
    PageUtils queryGoodsServiceList(PageDTO pageDTO);

    /**
     * 商品服务详情
     * @param id
     * @return
     */
    GoodsServiceVO getGoodsServiceInfoById(String id);

    /**
     * 修改商品服务信息
     * @param goodsService
     */
    void modifyGoodsServiceDetailsById(GoodsServiceVO goodsService);

    /**
     * 删除商品服务
     * @param ids
     */
    void removeGoodsServiceByIds(List<String> ids);

    /**
     * 新增商品服务
     * @param goodsService
     */
    void addGoodsService(GoodsServiceVO goodsService);

    /**
     * 添加二级分类
     * @param subGoodsClassDTO
     */
    void addSecondLevelClass(SubGoodsClassDTO subGoodsClassDTO);

    List<String> queryHNDetails();
}

